import type { IStorage } from '../types';

// SessionStorageImpl 类：封装 sessionStorage 的操作，提供统一的存储接口实现
// 实现 IStorage 接口，支持设置、获取、移除、清空和判断键是否存在

class SessionStorageImpl implements IStorage {
  /**
   * 设置指定 key 的值
   *
   * @param key 键名，类型为 string
   * @param value 键值，类型为 string
   * @returns 无返回值
   */
  setItem(key: string, value: string): void {
    sessionStorage.setItem(key, value);
  }

  /**
   * 获取指定 key 的值
   *
   * @param key 键名，类型为 string
   * @returns 对应的值，类型为 string 或 null
   */
  getItem(key: string): string | null {
    return sessionStorage.getItem(key);
  }

  /**
   * 移除指定 key 的项
   *
   * @param key 键名，类型为 string
   * @returns 无返回值
   */
  removeItem(key: string): void {
    sessionStorage.removeItem(key);
  }

  /**
   * 清空所有存储项
   *
   * @returns 无返回值
   */
  clear(): void {
    sessionStorage.clear();
  }

  /**
   * 判断指定 key 是否存在
   *
   * @param key 键名，类型为 string
   * @returns 存在返回 true，不存在返回 false
   */
  keyExists(key: string): boolean {
    return sessionStorage.getItem(key) !== null;
  }
}

export default SessionStorageImpl;
